home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / smaltalk / manchest.lha / MANCHESTER / manchester / 2.2 / Sun3.60SC-fixes.st < prev    next >
Text File  |  1993-07-24  |  2KB  |  48 lines

  1. "    NAME        Sun3.60SC-fixes
  2.     AUTHOR        manchester
  3.     FUNCTION    ?
  4.     ST-VERSION    2.2
  5.     PREREQUISITES    
  6.     CONFLICTS
  7.     DISTRIBUTION    world
  8.     VERSION        1
  9.     DATE    22 Jan 1989"
  10. 'From Smalltalk-80, Version 2.2 of July 4, 1987 on 20 March 1989 at 10:06:37 am'!
  11.  
  12.  
  13.  
  14. !DisplayScanner methodsFor: 'scanning'!
  15.  
  16. scanCharactersFrom: startIndex to: stopIndex in: sourceString rightX: rightX stopConditions: stops displaying: display
  17.     "This is the inner loop of text display -- but consider 
  18.     scanCharactersFrom: to:rightX: which would get the string, 
  19.     stopConditions and displaying from the instance. March through 
  20.     source String from startIndex to stopIndex. If any character is 
  21.     flagged with a non-nil entry in stops, then return the corresponding 
  22.     value. Determine width of each character from xTable. If dextX 
  23.     would exceed rightX, then return stops at: 258. If displaying is true, 
  24.     then display the character. Advance destX by the width of the 
  25.     character. If stopIndex has been reached, then return stops at: 257. 
  26.     Fail under the same conditions that the Smalltalk code below would 
  27.     cause an error. Optional. See Object documentation whatIsAPrimitive."
  28.  
  29.     | ascii nextDestX |
  30. "    <primitive: 103>
  31. "    lastIndex _ startIndex.
  32.     [lastIndex <= stopIndex]
  33.         whileTrue: 
  34.             [ascii _ (sourceString at: lastIndex) asciiValue.
  35.             (stopConditions at: ascii + 1) ~~ nil ifTrue: [^stops at: ascii + 1].
  36.             sourceX _ xTable at: ascii + 1.
  37.             nextDestX _ destX + (width _ (xTable at: ascii + 2) - sourceX).
  38.             nextDestX > rightX ifTrue: [^stops at: CrossedX].
  39.             display ifTrue: [self copyBits].
  40.             destX _ nextDestX.
  41.             lastIndex _ lastIndex + 1].
  42.     lastIndex _ stopIndex.
  43.     ^stops at: EndOfRun! !
  44.  
  45.  
  46.  
  47.  
  48.